风变编程 您所在的位置:网站首页 风变编程 python 风变编程

风变编程

2023-09-01 07:34| 来源: 网络整理| 查看: 265

Python基础语法这个课程系列最后一期讲语法的课程了,接下来的三关都是讲项目和实操的了。

1.什么是模块

之前我们已经学过,类可以封装方法和属性,就像这样:如图示

模块是最高级别的程序组织单元。这句话的意思是,模块什么都能封装,如图示

在模块中,我们不但可以直接存放变量,还能存放函数,还能存放类。如图示

更独特的是,定义变量需要用赋值语句,封装函数需要用def语句,封装类需要用class语句,但封装模块不需要任何语句。

之所以不用任何语句,是因为每一份单独的Python代码文件(后缀名是.py的文件)就是一个单独的模块。(这个要划一下重点)

如果你使用过vscode或pycharm等编程工具编写python程序,每次都需要先创建一个后缀名为.py的Python程序文件,才能运行程序。

在平时的课堂教学中,其实我们每次运行的代码,本质上都是在运行一个名为main.py的程序文件:(只不过被隐藏在了终端里)如图示

像这样:每一个单独的py文件,本质上都是一个模块。

所以,我们使用模块主要有两种方式,一种是自己建立模块并使用,另外一种是使用他人共享的模块。

2. 使用自己的模块

建立模块,其实就是在主程序的py文件中,使用import语句导入其他py文件。如图示

示例代码,代码及其运行结果如图示

2.1 import 语句

我们把这段代码拆分成两个模块,把封装好的变量、函数、类,放到test.py文件中,把执行相关的语句放到main.py文件中。代码和运行结果如图示 (两图)

被导入的模块代码

主程序模块代码以及运行结果

主程序main.py的代码注释:如图示

请你把这段代码拆分到两个模块中,其中执行语句放到main.py文件,封装好的变量、函数和类放到story.py文件

被导入的模块代码,图示

主程序模块代码以及运行结果,图示

Tips:import语句还有一种用法是import…as…。比如我们觉得import story太长,就可以用import story as s语句,意思是为“story”取个别名为“s”。另外,当我们需要同时导入多个模块时,可以用逗号隔开。比如import a,b,c可以同时导入“a.py,b.py,c.py”三个文件。

2.2 from … import … 语句

from … import …语句可以让你从模块中导入一个指定的部分到当前模块。格式如下如图示

示例代码如图示

被导入模块代码

主程序模块代码及其运行结果

当我们需要从模块中同时导入多个指定内容,也可以用逗号隔开,写成from xx模块 import a,b,c的形式。我们再运行一个小案例。如图示

被导入模块代码

主程序模块代码及其运行结果

对于from … import …语句要注意的是,没有被写在import后面的内容,将不会被导入。不然的话就会报错。

示例代码,题目要求:在main.py文件导入story模块,将类Temple的属性'庙里有个老和尚,'打印出来。

被导入模块代码

主程序模块代码及其运行结果

2.3  if __name__ == '__main__'

为了解释什么是【if __name__ == '__main__'】,我先给大家讲解一个概念“程序的入口”。

对于Python和其他许多编程语言来说,程序都要有一个运行入口。在Python中,当我们在运行某一个py文件,就能启动程序 ——— 这个py文件就是程序的运行入口。拿我们刚才的课堂练习为例:如图示

更复杂的情况,我们也可以运行一个主模块,然后层层导入其他模块:如图示

但是,当我们有了一大堆py文件组成一个程序的时候,为了【指明】某个py文件是程序的运行入口,我们可以在该py文件中写出这样的代码:如图示

这里的【if __name__ == '__main__'】就相当于是 Python 模拟的程序入口。

第一种情况:加上这句话后,程序运行效果不会变化,

示例代码,接下来这个程序运行结果会什么都没有 如图示

被导入模块代码

主程序模块代码及其运行结果

现在我们运行代码的时候,会发现if __name__ == '__main__'下的语句不会被执行。这是因为B.py文件并不是我们现在的程序运行入口,它是被A.py文件导入的。

3. 使用他人的模块 

代码案例,在之前的项目实操中,我们常常用到这样的语句:代码及其运行结果如图示 (2图)

这两个例子中的第一句代码import time和import random其实就是在导入time和random模块。

3.1 初探借用模块

time模块和random模块是Python的系统内置模块,也就是说Python安装后就准备好了这些模块供你使用。此外,Python作为一门胶水语言,一个强大的优势就是它拥有许多第三方的模块可以直接拿来使用。

比如说,爬虫时我们会需要用到requests这个库(库是具有相关功能模块的集合),就需要在终端输入pip3 install requests(Mac用户)的指令。

这是函数random.choice(list)的源代码,功能是从列表中随机抽取一个元素并返回。它的代码被找到了:如图示

random.randint(a,b)的源代码,功能是在a到b的范围随机抽取一个整数。它的代码也被找到了:如图示

3.2 如何自学模块

学习模块的核心是搞清楚模块的功能,也就是模块中的函数和类方法有什么作用,以及具体使用案例长什么样。

例如random模块的关键知识(也就是比较有用的函数和类方法),可以做成这样的笔记如图示 ,代码及其运行结果如图示

使用dir()函数查看一个模块,看看它里面有什么变量、函数、类、类方法。如图示,代码及其运行结果如图示

里面的内容确实很多,如果要自学,一定要做好心理准备

数据分析需要用到pandas和NumPy模块,网页开发要用到Django模块等等,这些大型模块最好还是在课程上系统学习,避免散乱的学习形不成知识体系。

3.3 带大家学习csv模块

我们使用import语句导入csv模块,然后用dir()函数看看它里面有什么东西:代码及其运行结果如图示(2图)

新建了一个名为test.csv的文件,里面的内容是这样:

运行learn_csv.py 文件

代码及其运行结果如图示

还有一个案例,如图示

代码及其运行结果如图示

数据流转图如图示

3.4 对模块这一知识进行总结 ,如图示(2图)

4.1第16关课后练习-时间记录器

练习介绍

练习目标

我们会通过今天的作业,了解Python的一个内置模块“time模块”的更多用法。

练习要求

在课堂上,我们见过了同样是内置模块的“csv模块”在数据处理方面的强大之处。

而这个练习,我们会和我们的老朋友“time模块”打交道,了解它的更多用法。

下面会先看一个没用模块的“时间记录器”,再借两个网址的知识,对其升级。

4.1.1一个没用模块的“时间记录器”

请运行右侧的代码,并读懂代码中的每一行。

涉及知识:判断、循环、文件读写等。

注:新建文件,在“步骤”旁的“文件”里查看。代码及其运行结果如图示(2图)

4.1.2为“时间记录器”加上time模块

只要我们想通过编程做到更多的事,就避不开主动了解更多知识。

所以,这次的练习,想将主动权更多地交在大家手里。

请你通过搜索和自学,了解并运用下面两个新知识:

time模块中的时间戳(可进行日期运算)和格式化日期(可将日期转换成平常我们所见的格式);

倒计时的功能怎么用print()函数实现,属于之前没有讲过的方法,需要去搜索新的知识。

我的个人代码及其运行结果如图示(4图)

参考答案的代码及其运行结果如图示(4图)

4.2 进阶练习-再出古诗默写题

练习介绍

练习目标

通过这个练习,我们会用模块去实现上一关卡的选做题“古诗默写”。

练习要求

这个练习,我们会接触一个新的Python内置模块:os(文件/目录方法)。

这个模块中的许多方法,配合文件读写以及数据处理,可以让一些工作得以自动化。

当然,在一个练习里,我们不会奢求那么多,先体验一下os模块里的3个方法即可。

代码回顾

我们先回顾一下不用模块是如何出古诗默写题的:

os 模块中的替换方法,可能你会觉得这么操作更麻烦,但假设要你处理大量的文档,模块会让你的代码更清晰更简洁。代码及其运行结果如图示

——Directly made by index crossing 2n 领袖



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有